package com.haiyou.common.util.collect;

import java.util.HashMap;
import java.util.Objects;

/**
 * @Author: xlight
 */
public class MultiKeyHashMap<K1,K2,V> implements MultiKeyMap<K1,K2,V>{

    public static <K1,K2,V> MultiKeyHashMap<K1,K2,V> create(){
        return new MultiKeyHashMap<>();
    }

    private final HashMap<K1,HashMap<K2,V>> values = new HashMap<>();

    @Override
    public V put(K1 k1, K2 k2, V v) {
        HashMap<K2,V> map = values.get(k1);
        if(Objects.isNull(map))
            map = new HashMap<>();
        map.put(k2,v);
        values.put(k1,map);
        return v;
    }

    @Override
    public V get(K1 k1, K2 k2) {
        HashMap<K2,V> map = values.get(k1);
        if(Objects.isNull(map)) return null;
        return map.get(k2);
    }

    @Override
    public V remove(K1 k1, K2 k2) {
        HashMap<K2,V> map = values.get(k1);
        if(Objects.isNull(map)){
            return null;
        }
        return map.remove(k2);
    }
}
